<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>JSP内置对象测试</title>
	</head>
	
	<%!
		public String param1;
		public String param2;
	%>
	
	<body>
	
	<%
	
		/*这是Scriptlet，JSP代码段，请同jsp_cmd.jsp的Scriptlet部分对比*/
		/*out对象是一个JspWriter，用于将内容输出到JSP/HTML页面之上。
		采用内置对象out进行文本的输出，输出的HTML代码均放置在一段Java代码内，
		使用print方法处理，因此需要将HTML标签写在print的字符串参数中。
		相对于混写代码，可读性有所提高，仍不太方便。
		Scriptlet将业务逻辑（Java代码）和前端页面混为一谈，不利用程序的可维护性和可扩展性。
		后面将看到更优秀的方案是使用JSTL标签库。
		*/
		out.print("<p>");
		out.print("<br>欢迎您的光临！<br>");

		int role = 0;
		if(role == 0){
			out.println("您的身份是：管理员<br>");
		}
		else{
			out.print("您的身份是：访客<br>");
		}
		out.print("</p>");
	%>
	
	<%
		/*本段Scriptlet测试JSP内置对象。*/
		/*request对象是一个HttpServletRequest，用于封装用户的HTTP请求*/
		/*request可获取HTTP请求报头各字段的信息*/
		out.print("协议：" + request.getProtocol() + "<br>");
		out.print("服务器名：" + request.getServerName() + "<br>");
		out.print("服务器地址：" + request.getLocalAddr() + "<br>");
		out.print("服务器端口号：" + request.getServerPort() + "<br>");
		out.print("Web应用名：" + request.getContextPath() + "<br>");
		
		/*request可获取HTTP请求的参数*/		
		param1 = request.getParameter("param1");
		param2 = request.getParameter("param2");
		
		out.print("<p>");
		out.print("可以使用out.print()方法输出到HTML页面：param1 = " + param1 + "<br>");
		out.print("可以使用out.print()方法输出到HTML页面：param2 = " + param2 + "<br>");
		out.print("</p>");
		
		
	%>
	<p>
	也可以使用JSP表达式输出到HTML页面：param1 = <%= param1 %><br>
	也可以使用JSP表达式输出到HTML页面：param2 = <%= param2 %><br>
	</p>
		
	
	</body>
</html>